// 版权所有2009 Go作者。版权所有。
// 此源代码的使用受BSD样式
// 许可证的约束，该许可证可以在许可证文件中找到。

// 包pathutil实现用于处理斜杠分隔的
// 路径的实用程序函数。
package pathutil

import "path"

// CanonicalURLPath返回p的规范url路径，该路径遵循以下规则：
// 1。路径始终以“/”
// 2开头。将多个斜杠替换为一个斜杠
// 3。更换每个“.”路径名元素，具有等效的一个
// 4。保留尾部斜杠
// 该函数是从stdlib http借用的。清理服务器中的路径。去
func CanonicalURLPath(p string) string {
	if p == "" {
		return "/"
	}
	if p[0] != '/' {
		p = "/" + p
	}
	np := path.Clean(p)
	// 路径。Clean删除除root以外的尾部斜杠，
	// 必要时将尾部斜杠放回原处。
	if p[len(p)-1] == '/' && np != "/" {
		np += "/"
	}
	return np
}
